package com.itdct.onflow.core.config

import com.itdct.onflow.core.config.onflow.*
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.stereotype.Component

/**
 * @author Zhouwx
 * @date 2025/7/8 23:28:33
 * @version 1.0
 * @description 如流核心配置
 */
@Component
@ConfigurationProperties(prefix = "onflow")
class OnflowConfig {
    /**
     * ★ 项目包名，这个参数很关键，请配合自己的项目来填写！
     */
    var projectPackageName = "com.itdct.onflow"

    /**
     * 实例ID，每个节点都需要不同id
     */
    var instanceId = "1"

    /**
     * ★ 平台类型，默认为onflow-backend，该值遇Sys中多个模块相关，请自行修改！
     */
    var platformType = "onflow-backend"

    /**
     * ★ api后缀，默认为adw
     */
    var apiSuffix = "adw"

    /**
     * 是否检查权限，默认为true，如果为false，则token和api权限都不检查
     */
    var checkPermission = true

    /**
     * 是否检查登录token，默认为true
     */
    var checkToken = true

    /**
     * 是否检查api权限，默认为true
     */
    var checkApiPermission = true

    /**
     * 是否检查重复请求
     */
    var checkDuplicate = false

    /**
     * 是否初始化api到数据库
     */
    var initApi = true

    /**
     * 额外的自定义参数
     */
    var params = HashMap<String, String>()

    /**
     * 请求成功返回的code最大值，最小值是200，最大值在这里填
     */
    var successCodeMaxValue = 299

    /**
     * mybatis-plus mapper扫描的包
     */
    var mapperScanPackages = arrayListOf<String>()

    /**
     * 自动生成器相关配置
     */
    var generate = GenerateConfig()

    /**
     * 登录相关配置
     */
    var login = LoginConfig()

    /**
     * 字典相关配置
     */
    var dict = DictConfig()

    /**
     * 文件存储相关配置
     */
    var file = FileConfig()

    /**
     * 日志相关配置
     */
    var log = LogConfig()

    /**
     * 逻辑删除相关配置
     */
    var logicDelete = LogicDeleteConfig()

    /**
     * websocket相关配置
     */
    var websocket = WebsocketConfig()

    /**
     * 跨域相关配置
     */
    var cors = CorsConfig()

    /**
     * 系统性能监控相关配置
     */
    var monitor = MonitorConfig()

    /**
     * RSA私钥，请自行生成
     */
    var privateKey = ""

    /**
     * RSA公钥，请自行生成
     */
    var publicKey = ""
}